From f3763c47b8c77810c8e33d02d93ddef873bf8fae Mon Sep 17 00:00:00 2001 From: "adsharma@los-vmm.sc.intel.com" Date: Fri, 12 Aug 2005 09:25:49 -0800 Subject: [PATCH] Distinguish ioemu handled devices and para virtualized devices Signed-off-by: Xiaofeng Ling Signed-off-by: Arun Sharma --- tools/examples/xmexample.vmx | 2 +- tools/python/xen/xend/image.py | 10 +++++++++- tools/python/xen/xend/server/blkif.py | 11 ++++++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/tools/examples/xmexample.vmx b/tools/examples/xmexample.vmx index 95616cda61..77662fcca9 100644 --- a/tools/examples/xmexample.vmx +++ b/tools/examples/xmexample.vmx @@ -34,7 +34,7 @@ name = "ExampleVMXDomain" # and MODE is r for read-only, w for read-write. #disk = [ 'phy:hda1,hda1,r' ] -disk = [ 'file:/var/images/min-el3-i386.img,hda,w' ] +disk = [ 'file:/var/images/min-el3-i386.img,ioemu:hda,w' ] #---------------------------------------------------------------------------- # Set according to whether you want the domain restarted when it exits. diff --git a/tools/python/xen/xend/image.py b/tools/python/xen/xend/image.py index afa6d1da99..ebf1b2009a 100644 --- a/tools/python/xen/xend/image.py +++ b/tools/python/xen/xend/image.py @@ -16,6 +16,7 @@ #============================================================================ import os, string +import re import xen.lowlevel.xc; xc = xen.lowlevel.xc.new() from xen.xend import sxp @@ -329,8 +330,15 @@ class VmxImageHandler(ImageHandler): if name == 'vbd': vbdinfo = sxp.child(device, 'vbd') uname = sxp.child_value(vbdinfo, 'uname') - vbddev = sxp.child_value(vbdinfo, 'dev') + typedev = sxp.child_value(vbdinfo, 'dev') (vbdtype, vbdparam) = string.split(uname, ':', 1) + if re.match('^ioemu:', typedev): + (emtype, vbddev) = string.split(typedev, ':', 1) + else: + emtype = 'vbd' + vbddev = typedev + if emtype != 'ioemu': + continue; vbddev_list = ['hda', 'hdb', 'hdc', 'hdd'] if vbddev not in vbddev_list: raise VmError("vmx: for qemu vbd type=file&dev=hda~hdd") diff --git a/tools/python/xen/xend/server/blkif.py b/tools/python/xen/xend/server/blkif.py index 5bd89e8353..49d1fc5f9e 100755 --- a/tools/python/xen/xend/server/blkif.py +++ b/tools/python/xen/xend/server/blkif.py @@ -18,6 +18,7 @@ """Support for virtual block devices. """ import string +import re from xen.util import blkif from xen.xend.XendError import XendError, VmError @@ -199,6 +200,7 @@ class BlkDev(Dev): self.vdev = None self.mode = None self.type = None + self.emtype = None self.params = None self.node = None self.device = None @@ -237,7 +239,12 @@ class BlkDev(Dev): # Split into type and type-specific params (which are passed to the # type-specific control script). (self.type, self.params) = string.split(self.uname, ':', 1) - self.dev = sxp.child_value(config, 'dev') + typedev = sxp.child_value(config, 'dev') + if re.match( '^ioemu:', typedev): + (self.emtype, self.dev) = string.split(typedev, ':', 1) + else: + self.emtype = 'vbd' + self.dev = typedev if not self.dev: raise VmError('vbd: Missing dev') self.mode = sxp.child_value(config, 'mode', 'r') @@ -258,6 +265,8 @@ class BlkDev(Dev): if recreate: pass else: + if self.emtype == 'ioemu': + return node = Blkctl.block('bind', self.type, self.params) self.setNode(node) self.attachBackend() -- 2.30.2